//package main

/*
升级随机点名系统：
可以无限次数的按任意键进行抽取，按q退出
抽到的人，不需要再参与点名抽取

使用go语言实现5行5列盘龙数组
*/

// 直接存
//func main() {
//	arr := [5][5]int{
//		{1, 2, 3, 4, 5}, {16, 17, 18, 19, 6}, {15, 24, 25, 20, 7}, {14, 23, 22, 22, 8}, {13, 12, 11, 10, 9},
//	}
//	fmt.Println(arr)
//	for i := 0; i < 5; i++ {
//		for j := 0; j < 5; j++ {
//			fmt.Printf("%d\t", arr[i][j])
//		}
//		fmt.Println()
//	}
//}

// 生成一个盘龙数组
package main

import "fmt"

func main() {
	arr := [5][5]int{}
	num := 1
	dir := 1         //设置初始方向
	row, col := 0, 0 //记录初始位置
	for num <= 25 {
		//生成一个盘龙数组
		//判断方向
		switch dir {
		case 1: //向右
			if col == 5 || arr[row][col] != 0 {
				dir = 2
				col--
				row++
			} else {
				arr[row][col] = num
				col++
				num++
			}

		case 2: //向下
			if row == 5 || arr[row][col] != 0 {
				dir = 3
				row--
				col--
			} else {
				arr[row][col] = num
				row++
				num++
			}

		case 3: //向左
			if col == -1 || arr[row][col] != 0 {
				dir = 4
				col++
				row--
			} else {
				arr[row][col] = num
				col--
				num++
			}

		case 4: //向上
			if row == -1 || arr[row][col] != 0 {
				dir = 1
				row++
				col++
			} else {
				arr[row][col] = num
				row--
				num++
			}
		}
	}

	//输出盘龙数组
	for i := 0; i < 5; i++ {
		for j := 0; j < 5; j++ {
			fmt.Printf("%d\t", arr[i][j])
		}
		fmt.Println()
	}
}
